package com.yaodian100.ec.creditcard.service;

import java.math.BigDecimal;
import java.util.List;

import com.yaodian100.core.common.service.DomainService;
import com.yaodian100.ec.creditcard.entity.Creditcard;
import com.yaodian100.ec.creditcard.entity.CreditcardDetail;

public interface CreditcardService extends DomainService<Creditcard> {

	/**
	 * 取得目前有效且最新的 Creditcard Campaign
	 * 
	 * @param productId 产品ID
	 * @param cookie 活动渠道
	 * @param domain 活动Domain
	 * @return
	 */
	Creditcard getValidCreditcard(String productId, String cookie, String domain);

	/**
	 * 取得目前有效且最新的 Creditcard Campaign 回传资料中，只会有指定银行的期数资料
	 * 
	 * @param productId 产品ID
	 * @param detailId 信用卡活动明细档ID
	 * @param period 期数
	 * @param cookie 活動渠道
	 * @param domain 活動domain
	 * @return
	 */
	CreditcardDetail getValidCreditcard(String productId, String detailId, String period, String cookie, String domain);

	/**
	 * 儲存活動（主副檔同一個Transaction）
	 * 
	 * @param main
	 * @param details
	 * @return
	 */
	boolean saveCreditcardCombine(Creditcard main, List<CreditcardDetail> details);

	/**
	 * 修改活動（主副檔同一個Transaction）
	 * 
	 * @param main
	 * @param details
	 * @return
	 */
	boolean updateCreditcardCombine(Creditcard main, List<CreditcardDetail> details);

	/**
	 * 依信用卡活動找出符合目前金額的資料
	 * 
	 * @param creditcard
	 * @param price
	 * @return
	 */
	boolean chkAvailableCreditCardDetails(Creditcard creditcard, BigDecimal price);

}
